package com.eclink.iot.rfidclient.websocket;

import com.eclink.iot.rfidclient.manager.RFIDManager;
import jakarta.websocket.*;
import jakarta.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

// 监听哪些客户端来连接了WebSocket服务端
// 监听websocket地址 /rfid
@ServerEndpoint("/rfid")
@Component
@Slf4j
public class WebServerEndpoint {


    // 建立连接时执行的操作
    @OnOpen
    public void onOpen(Session session){   // 每个websocket连接对于服务端来说都是一个Session
        SessionHolder.sessions.put(session.getId(), session);

        log.info("websocket is open");
    }

    /**
     * 收到客户端消息时执行的操作
     * @param text 接受到客户端的消息
     * @return 返回给客户端的消息
     */
    @OnMessage
    public String onMessage(String text){

        // 读标签
        if ("read-tag".equals(text)){

            int areaIndex = 1;//获取操作的区域

            //获取访问密码
            int accessPwdInt = 0;
            System.out.println("访问密码=" + accessPwdInt);

            //获取起始地址
            int addressOffset = 0;

            //获取操作数据的长度
            short operateLength = 2;

            RFIDManager.MsgRead((byte) 0, (byte) areaIndex, (byte) addressOffset, operateLength, accessPwdInt);
        }
        log.info("收到一条新消息: " + text);

        return null;
    }

    // 连接关闭时执行的操作
    @OnClose
    public void onClose(Session session){
        SessionHolder.sessions.remove(session.getId());
        log.info("websocket is close");
    }


}